package br.senai.sc.web.amostras.beans;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.senai.sc.controller.crud.PontoColetaCRUD;
import br.senai.sc.controller.crud.RelatorioAmostra;
import br.senai.sc.model.Amostra;
import br.senai.sc.model.PontoColeta;

/**
 * Responsável por gerenciar as buscas por {@link Amostra}.
 * 
 * @author Tiago
 */
@Named
@SessionScoped
public class AmostraBuscaBean implements Serializable {

	private static final long serialVersionUID = 1L;

	private PontoColeta pontoColeta;
	private Date dtInicial;
	private Date dtFinal = new Date();
	private List<Amostra> amostras;

	@Inject
	private RelatorioAmostra relatorioAmostra;

	@Inject
	private PontoColetaCRUD pontoColetaCRUD;

	public Date getDtInicial() {
		return dtInicial;
	}

	public void setDtInicial(Date dataInicial) {
		dtInicial = dataInicial;
	}

	public Date getDtFinal() {
		return dtFinal;
	}

	public void setDtFinal(Date dataFinal) {
		dtFinal = dataFinal;
	}

	public List<Amostra> getAmostras() {
		return amostras;
	}

	public void setAmostras(List<Amostra> amostras) {
		this.amostras = amostras;
	}

	public PontoColeta getPontoColeta() {
		return pontoColeta;
	}

	public void setPontoColeta(PontoColeta pontoColeta) {
		this.pontoColeta = pontoColeta;
	}

	public void carregarPontoColeta(Integer idPontoColeta) {
		pontoColeta = pontoColetaCRUD.findPontoColeta(idPontoColeta);
	}

	/**
	 * @return Lista de {@link Amostra} de um {@link PontoColeta} com data
	 *         inicial e final setadas nos atributos dtIncial e dtFinal.
	 */
	public void amostraPorIntervaloData() {
		amostras = relatorioAmostra.amostras(pontoColeta, dtInicial, dtFinal);
	}

}
